//
// Created by ds on 24-7-3.
//

#ifndef SUMOENTITY_H
#define SUMOENTITY_H
#include <ostream>
#include <string>
#include "Utils.h"

using namespace std;

struct Position {
    double x;
    double y;
    double z;

    friend std::ostream &operator<<(std::ostream &os, const Position &obj) {
        return os
               << "x: " << obj.x
               << ", y: " << obj.y
               << ", z: " << obj.z;
    }
};

struct Color {
    int r;
    int g;
    int b;
};

struct SumoActor {
    std::string id;
    std::string type;
    std::string vClass;
    std::string  color;
    double speed;
    Position position;
    double angle;
    double slope;
    double length;
    double width;
    double height;

    friend std::ostream &operator<<(std::ostream &os, const SumoActor &obj) {
        return os
               << "id: " << obj.id
               << ", speed: " << obj.speed
               << ", position: " << obj.position
               << ", angle: " << obj.angle
               << ", slope: " << obj.slope
               << ", length: " << obj.length
               << ", width: " << obj.width
               << ", height: " << obj.height;
    }
};

struct NetOffset {
    double x;
    double y;

    friend std::ostream &operator<<(std::ostream &os, const NetOffset &obj) {
        return os
               << "x: " << obj.x
               << ", y: " << obj.y;
    }
};


#endif //SUMOENTITY_H
